package genericParadigm;

import java.util.ArrayList;
import java.util.List;

public class Test {


    public static void main(String[] args) throws Exception {

        test1();

    }

    private static void test1() {
        int i = 0;
        String str = "xiaoma";
        List list = new ArrayList();
        System.out.println(method(i));
    }

    /**
     * 泛型也是有范围的，定义在类中整个类都能使用，定义在函数中，只能用在该函数
     * @param t
     * @param <T>
     * @return
     */
    public static <T> T method(T t){ // <T>：表示定义了一个泛型T，第一个T：表示返回值类型是T
        return t;
    }


    /**
     *  Class<?> 与 Class<T>的区别：
     *  Class<T>在实例化的时候，T要替换成具体类
     *  Class<?>它是个通配泛型，?可以代表任何类型，主要用于声明时的限制情况
     */
    {
         Class<?> clazz;
//         Class<T> clazz2;
    }



    {
        List<? super Test> list=new ArrayList<>();
        list.add(new TestInner());
    }

    class TestInner extends Test{

    }

}
